Handle a borderline case correctly
authorMatthias Clasen <matthiasc@src.gnome.org>
Wed, 18 Apr 2007 15:19:58 +0000 (15:19 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Wed, 18 Apr 2007 15:19:58 +0000 (15:19 +0000)
svn path=/trunk/; revision=17608

ChangeLog
gdk/gdkregion-generic.h

index dd038356fc8a096361721eb95f2fa338c1900c34..1ab825dc70298d1cb587f325eb16e3392c3cc6a8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-18  Matthias Clasen  <mclasen@redhat.com>
+
+       * gdk/gdkregion-generic.h (GROWREGION): Handle the case
+       of nRects == 0 correctly.  
+       
 2007-04-18  Emmanuele Bassi  <ebassi@gnome.org>
 
        * gtk/gtkrecentmanager.c (gtk_recent_manager_lookup_item): Fix
index bae8c9b77693abcf56223c8f91e80c82d149f953..9f510621e794f1492cb98d45582a34e964ee4268 100644 (file)
@@ -83,14 +83,20 @@ struct _GdkRegion
               (idRect)->extents.y2 = (r)->y2;\
         }
 
-#define GROWREGION(reg, nRects){                                                \
-         if ((reg)->rects == &(reg)->extents) {                                 \
-            (reg)->rects = g_new (GdkRegionBox, (nRects));                      \
-            (reg)->rects[0] = reg->extents;                                      \
-          }                                                                      \
-          else                                                                   \
-            (reg)->rects = g_renew (GdkRegionBox, (reg)->rects, (nRects));       \
-         (reg)->size = (nRects);                                                \
+#define GROWREGION(reg, nRects) {                                         \
+         if ((nRects) == 0) {                                             \
+            if ((reg)->rects != &(reg)->extents) {                        \
+             g_free ((reg)->rects);                                       \
+              (reg)->rects = &(reg)->extents;                             \
+           }                                                              \
+         }                                                                \
+         else if ((reg)->rects == &(reg)->extents) {                      \
+            (reg)->rects = g_new (GdkRegionBox, (nRects));                \
+            (reg)->rects[0] = (reg)->extents;                              \
+          }                                                                \
+          else                                                             \
+            (reg)->rects = g_renew (GdkRegionBox, (reg)->rects, (nRects)); \
+         (reg)->size = (nRects);                                          \
        }                                
 
 /*